aiii iaaa. must refactor...