Initial implementation and comments