implemented a few basic ideas