basic layer functionality complete