#1 implementation of the first working