making abstract buildable object traits to seperate abstract building from serialization