use real methods
shuffle some of the code around