another principle applicable I think is knowing what may or may not change in the future. being able to switch from legs to wheels is useful, so maybe put an interface in between. being able to change a table into a bed - not useful and will sink your project.