started on functional, will revisit some levelmeup