add more slots and some helper functions