all sorts of weird object and functionmadness