Refactoring Buildable and CanBuild