add some helper functions for greater abstraction