use Integer instead of Fixnum
don't create predicate accessors
clean up templates and add some helper methods