lots and lots of initial implementations