dirty working crud; next step is refactoring