trying to get stuff to work, also added some macros for use when lazy