Added basic implementation and tests