initial oop, +fixes +build