Full functionality implemented