fixed compiler
cleaner implementation