formatted
refactored #20
type