Basic implementation. Missing some functionality.