better solutions
NotesOnStaticTyping