Completed implementing basic functionality