start implementing compilation