work in progress, finishing basic features