Full implementation, bug buggy