complicated methods i'm working through (not tested)