refactoring ft up to a superclass