i guess i never finished refactoring this guy...