- refactor inheritance stuff