refactors, adds finals.