made project structure a bit cleaner, less weird casting too