callback'd shit. 'working', but needs heavy refactoring