use models instead of procedure
rename prompt function
move helpers to utils
docs