Initial commit
refactor to make things cleaner and fancier